package com.vhall.component.plugin.common.utils.algorithm;

/**
 * 签名生成器
 *
 * @author yuanzh
 * @date 2021/9/8
 */
public interface ISignGenerator {

    /**
     * 签名
     * 签名方式：将signKey拼接到content首尾作为签名数据进行计算
     * 其中content是首先将所有请求参数按参数名顺序排序，然后按"键值"拼接
     *
     * @param content 签名数据
     * @param signKey 签名密钥
     * @param charset 字符集
     * @return 签名
     */
    String sign(String content, String signKey, String charset);

    /**
     * 验证签名
     *
     * @param content   签名数据
     * @param charset   字符集
     * @param signKey   签名密钥
     * @param signature 待验证签名
     * @return true=验证通过 false=验证失败
     */
    boolean verify(String content, String charset, String signKey, String signature);

}
